/*  
 *  Nanjing JIYU Technology Co.,Ltd All rights reserved.
 *  Copyright (C) 2022 
 *  ==============================================================
 * 
 *  gpio.c 
 *    系统用到的gpio配置
 *
 *  --------------------------------------------------------------
 *  
 */

#include "gpio.h"


/*-----------------------------  用于电机方向控制的引脚  -----------------------------*/

static void gpio_motor_init(void)
{
  __HAL_RCC_GPIOA_CLK_ENABLE();             
  __HAL_RCC_GPIOB_CLK_ENABLE();             
  __HAL_RCC_GPIOC_CLK_ENABLE();             
  
  GPIO_InitTypeDef gpio_config;
  gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_5;
  gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
  gpio_config.Pull = GPIO_PULLUP;
  gpio_config.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOA, &gpio_config);

  gpio_config.Pin = GPIO_PIN_14 | GPIO_PIN_15;
  gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
  gpio_config.Pull = GPIO_PULLUP;
  gpio_config.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOB, &gpio_config);

  gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
  gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
  gpio_config.Pull = GPIO_PULLUP;
  gpio_config.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOC, &gpio_config);
}


/*-----------------------------  用于灰度传感器的引脚  -----------------------------*/

/* 白线为0 黑色为1 */
static void gpio_transporter_init(void)
{
  GPIO_InitTypeDef gpio_config;

  __HAL_RCC_GPIOA_CLK_ENABLE();

  gpio_config.Pin = GPIO_PIN_0 | GPIO_PIN_9 | GPIO_PIN_10;
  gpio_config.Mode = GPIO_MODE_INPUT;
  gpio_config.Pull = GPIO_PULLUP;
  gpio_config.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOA, &gpio_config);
}

/*-----------------------------  用到的全部GPIO初始化  -----------------------------*/

void gpio_init(void)
{
  gpio_motor_init();
  gpio_transporter_init();
}

